草庐IT

C++ 风格约定 : Parameter Names within Class Declaration

全部标签

c++ - gcc 中的 Borland 风格 __closure

我是使用gnuC++编程的新手。我有一个我认为可以转换为跨平台的应用程序,大约两个月前我开始使用C::B。我有很多问题,但我解决了它们,将原始代码保留在对象类或结构的#ifdefBCB...#else...#endifblock中。我无法解决以下问题,因为它非常复杂。函数声明自1997/1998年以来一直有效,应用程序的每个点都是依赖于这些定义和实现开发的。它们用于对象间、进程间和网络通信以及所有交互事件系统。只要我们的JetRtl.dll准备好服务并且调用者知道参数的数量,任何地方的任何函数都可以使用任意数量(最多50个)的参数直接调用,或通过流连接调用。我解释了这么久,因为据我所知

c++ - 需要澄清 C 风格、重新解释和 const 转换

我假设C风格的转换(不鼓励)只是reinterpret_casts是对的吗?使用后者在寻找令人讨厌的转换时在视觉上引人注目并且易于搜索,因此推荐使用C风格转换?如果使用const_cast放弃const并写入原始const对象是未定义的,那么const_cast的目的是什么?注意:我知道Bjarne正确地谴责转换操作是不安全的,甚至达到了声明“丑陋操作应该具有丑陋语法形式的程度。“因此C++中转换运算符的冗长。所以我会尽量减少它们的使用。promise。:) 最佳答案 没有。C转换可以执行与const_cast、static_cas

c++ - 编译器切换到禁用 c 风格转换中的 const_cast 语义?

最近我偶然发现了这样的代码:voidfoo(constBar*b){...takes_nonconst_param_fn((Bar*)b);...显然,开发人员并不知道他在做什么,但如果编译器没有默默地接受c-style-cast并且至少需要一个适当的const_cast,他可能已经知道了在提交之前两次。所以这让我开始思考,现代编译器是否有一个开关来防止const_castc风格转换的语义?防止所有c-style-casts的出现根本不切实际,允许它们的static_和reinterpret_语义是必要的邪恶(如果仅用于某些库代码),但我的印象是,在C++代码库中,合法使用c-styl

c# - 为什么在任何编程语言中都有声明默认 namespace /库的约定?

为什么没有任何编程语言加载默认库,如stdio.h、iostream.h或usingSystem,以便声明避免了吗?由于这些命名空间/库在任何程序中都是必需的,为什么编译器期望它由用户声明。是否存在不使用namespace/header的程序?即使是,加载无害的默认库有什么问题?我不是那个意思..我懒得写一行代码但是编译器哭着声明所谓的defaultthingummiesending是没有意义的(对我来说)出现编译错误。 最佳答案 这是因为有的程序是在没有标准库的情况下编写的。例如,有许多在不提供stdio.h的嵌入式系统上运行的C

c++ - ruby 如何像 C++ 一样以 scanf 风格读取用户输入

我是Ruby新手。我需要读取用户输入的(n)个数字,在C++中我使用了这段代码for(i=0;i此代码准确读取由任何空格(制表符、空格、换行符)分隔的(n)个数字。我如何在ruby​​中做到这一点?在Ruby中我试着这样做require'scanf'n=scanf("%d");arr=Array.new()n.times{arr但是当我输入这样的字符串时,这段代码不起作用:148但如果我输入这个就可以正常工作148 最佳答案 使用字符串#scan我不是100%确定我知道你真正想在这里做什么。如果你只想扫描字符串中的数字,你可以使用S

c++ - 简单的多维 C 风格数组给出段错误 : 11

constintL=10;std::complexc_array[L][L][L][L][L][L]//6dimensions所需空间:2*8*10^6字节它不应该用完所有内存,对吧? 最佳答案 每个进程都有堆栈大小限制。因此,如果你真的想在本地(在堆栈中)创建这个数组,唯一的解决办法是为你的程序增加堆栈大小限制。如何更改堆栈大小限制取决于您的操作系统。另一种方法是在堆中创建这个数组。为此,您必须使用“new”关键字,如下所示。std::complex*c_array=newstd::complex[L][L][L][L][L][L

c++ - 使用调用约定 fastcall 的任何实际用例?

您有使用调用约定fastcall的实际用例吗?谢谢。 最佳答案 __fastcall尝试在CPU寄存器而不是堆栈中传递函数参数(如果可能),这样速度更快。这是一个MSDN文章的链接,该文章解释了__fastcall调用约定:http://msdn.microsoft.com/en-us/library/6xa169sk(VS.71).aspxThefirsttwoDWORDorsmallerargumentsarepassedinECXandEDXregisters;allotherargumentsarepassedrightto

Openharmony开发记录-API10的Restful风格请求封装

OpenHarmony开发记录-Restful风格请求封装介绍本代码基于stage模型API10场景介绍应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。接口说明HTTP数据请求功能主要由http模块提供。使用该功能需要申请ohos.permission.INTERNET权限。权限申请请参考访问控制(权限)开发指导。涉及的接口如下表,具体的接口说明请参考API文档。接口名功能描述createHttp()创建一个http请求。request()根据URL地址,发起HTTP网络请求。requestInStr

c++ - 为什么使用错误的调用约定有时会奏效?

我使用“StartServiceCtrlDispatcher”函数在Windows中注册了一个回调函数(称为ServiceMain),但是我声明的回调函数是用错误的调用约定编译的。问题是,在某些计算机上,当应用程序从回调函数返回时,应用程序崩溃了,但在其他计算机上,应用程序没有崩溃。现在,一旦我发现这个错误,一切正常,但我只是不明白为什么在某些计算机上它可以正常工作而不会崩溃?谢谢!:-) 最佳答案 这都是特定于Windows的,我们在这里不是在谈论标准的C++。查看documentationofStartServiceDispat

c++ - 对 __cdecl 和 __stdcall 调用约定感到困惑

__cdecl调用约定说:callercleanupstack.__stdcall调用约定说:被调用者清理堆栈。所以我尝试测试下面的代码:#includechar*callee(){charstr[]="abcd";returnstr;}intmain(){char*str;str=callee();printf("%s\n",str);return0;}根据上面的两种调用约定,我认为:__cdecl调用者清理堆栈,因此printf("%s\n",str)应该输出“abcd”。__stdcall由被调用方清理堆栈,因此printf("%s\n",str)应该输出困惑的字符。但实际上,两